#ifndef VERTICALCARDINAL_H_
#define VERTICALCARDINAL_H_

#include <vector>

namespace catan
{

class VerticalCardinal
{
public:
	enum Enum_VerticalCardinal { VERTICAL_TR = 30, VERTICAL_TC = 90, VERTICAL_TL = 150, VERTICAL_BL = 210, VERTICAL_BC = 270, VERTICAL_BR = 330 };
	
	static const std::vector<Enum_VerticalCardinal> &getVectorOfPossibleEnumValues();
	static const std::vector<Enum_VerticalCardinal> &getVectorOfReducedPossibleEnumValues();
	static bool canInit(Enum_VerticalCardinal enumCardinal);
	
	explicit VerticalCardinal(Enum_VerticalCardinal enumCardinal);
	Enum_VerticalCardinal getEnum() const;
	bool operator==(const VerticalCardinal &other) const;
	bool operator<(const VerticalCardinal &other) const;
	VerticalCardinal& operator=(const VerticalCardinal& other);
	
private:
	static std::vector<Enum_VerticalCardinal> vectorOfPossibleEnumValues;
	static std::vector<Enum_VerticalCardinal> vectorOfReducedPossibleEnumValues;
	
	Enum_VerticalCardinal enumCardinal;
};

static VerticalCardinal verticalTR(VerticalCardinal::VERTICAL_TR), verticalTC(VerticalCardinal::VERTICAL_TC), verticalTL(VerticalCardinal::VERTICAL_TL), verticalBL(VerticalCardinal::VERTICAL_BL), verticalBC(VerticalCardinal::VERTICAL_BC), verticalBR(VerticalCardinal::VERTICAL_BR);

}

#endif /*VERTICALCARDINAL_H_*/
